mac-crafter: Apply code-signing procedure on Sparkle as recommended by Sparkle docs
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Tue, 14 Jan 2025 05:43:58 +0000 (13:43 +0800)
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>
Wed, 15 Jan 2025 08:21:19 +0000 (09:21 +0100)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
admin/osx/mac-crafter/Sources/Utils/Codesign.swift

index f262ff39d7bacb7140c17a322ea83ee9b59e4444..1f43d3e49aed7da9b226b4eecc3a372622eaeac9 100644 (file)
@@ -126,17 +126,31 @@ func codesignClientAppBundle(
     // We need to strip these out manually.
 
     let sparkleFrameworkPath = "\(frameworksPath)/Sparkle.framework"
-    if FileManager.default.fileExists(atPath: "\(sparkleFrameworkPath)/Resources/Autoupdate.app") {
-        print("Code-signing Sparkle autoupdater app (without entitlements)...")
-
-        try recursivelyCodesign(
-            path: "\(sparkleFrameworkPath)/Resources/Autoupdate.app",
+    if FileManager.default.fileExists(atPath: sparkleFrameworkPath) {
+        print("Code-signing Sparkle...")
+        try codesign(
             identity: codeSignIdentity,
-            options: "--timestamp --force --verbose=4 --options runtime --deep"
+            path: "\(sparkleFrameworkPath)/Versions/B/XPCServices/Installer.xpc",
+            options: "-f -o runtime"
+        )
+        try codesign(
+            identity: codeSignIdentity,
+            path: "\(sparkleFrameworkPath)/Versions/B/XPCServices/Downloader.xpc",
+            options: "-f -o runtime --preserve-metadata=entitlements"
+        )
+        try codesign(
+            identity: codeSignIdentity,
+            path: "\(sparkleFrameworkPath)/Versions/B/Autoupdate",
+            options: "-f -o runtime"
+        )
+        try codesign(
+            identity: codeSignIdentity,
+            path: "\(sparkleFrameworkPath)/Versions/B/Updater.app",
+            options: "-f -o runtime"
+        )
+        try codesign(
+            identity: codeSignIdentity, path: sparkleFrameworkPath, options: "-f -o runtime"
         )
-
-        print("Re-codesigning Sparkle library...")
-        try codesign(identity: codeSignIdentity, path: "\(sparkleFrameworkPath)/Sparkle")
     } else {
         print("Build does not have Sparkle, skipping.")
     }